home *** CD-ROM | disk | FTP | other *** search
- Program ACC_Load;
-
- TYPE
- fn_range = 1..14 ;
- y_n_range=-1..1;
- fname = PACKED ARRAY [ fn_range ] OF char ;
- frec = PACKED RECORD
- reserved : PACKED ARRAY [ 0..19 ] OF byte ;
- resvd2 : byte ;
- attrib : byte ;
- time_stamp : integer ;
- date_stamp : integer ;
- size : long_integer ;
- name : fname ;
- END ;
- path_name2 = PACKED ARRAY [ 1..80 ] OF char ;
- name_array= ARRAY [1..120] of fname;
- yes_no = ARRAY [1..120] of y_n_Range;
- String2 =String[2];
- String3 =String[3];
- VAR
- f1,f2:TEXT;
- kount,m,number:Integer;
- r : Frec;
- change,yes_array:Yes_no;
- Names: name_Array;
- i : fn_range ;
- path_string : STRING ;
- path : path_name2 ;
- dummy:STRING;
- s: STRING2;
- {$I D:CURSOR.PAS}
-
- PROCEDURE init;
- BEGIN
- clrScr;
- InverseVideo;
- CursOn;
- Write (CHR(14),CHR(15));
- Writeln(' Accessory Loader, by Eric Robishaw ',CHR(14),CHR(15));
- NormVideo;
- Writeln ('Written in Personal Pascal, Portions of');
- Writeln ('this product are Copyright (c) 1986,');
- Writeln ('OSS and CCD. Used by permission of OSS.');
- END;
-
-
- PROCEDURE set_dta( VAR buf : frec ) ;
- GEMDOS( $1a ) ;
-
- FUNCTION get_first( VAR path : path_name2; search_attrib :integer ):integer ;
- GEMDOS( $4e ) ;
-
- FUNCTION get_next : integer ;
- GEMDOS( $4f ) ;
-
- (*******************************************************************)
-
- PROCEDURE Show_it;
- VAR Kount:INTEGER;
- BEGIN
- Kount:=1;
- While (Kount<=Number) AND (KOUNT<=20) DO
- BEGIN
- if Kount<10 THEN Write ('0');
- Write (KOUNT,') ');
- if yes_array[kount]=1 THEN
- InverseVideo;
- m:=1;
- While (names[kount,m]<>'.') AND (m<=14) DO
- BEGIN
- Write (names[kount,m]);
- m:=m+1;
- END;
- Writeln;
- NormVideo;
- Kount:=Kount+1;
- END;
- IF (Kount<=Number) THEN
- BEGIN
- For Kount:=21 to Number DO
- BEGIN
- GotoXY (Kount-19,20);
- Write (KOUNT,') ');
- if yes_array[KOUNT]=1 THEN
- InverseVideo;
- m:=1;
- While (names[kount,m]<>'.') AND (m<=14) DO
- BEGIN
- Write (names[kount,m]);
- m:=m+1;
- END; (*WHILE*)
- NormVideo;
- END; (*FOR KOUNT*)
- END; (*IF*)
- InverseVideo;
- GotoXY (22,1);
- Write ('+-');
- Normvideo;
- Write(' to end, ');
- InverseVideo;
- Write ('ENTER');
- NormVideo;
- Write (' to undo');
- InverseVideo;
- GotoXY (24,10);
- Write ('Change:');
- NormVideo;
- Write ('__');
- END;
-
- (******************************************************************)
-
- Procedure Get_answer (VAR Change:Yes_no);
- VAR DONE:BOOLEAN;
- The_Number,over,x,y,move1,Kount2:INTEGER;
- move:Long_Integer;
-
- Procedure Change_it;
- VAR i:INTEGER;
- BEGIN
- For i:=1 to NUMBER DO
- change[i]:=-1;
- For i:=NUMBER+1 TO 120 DO
- change[i]:=0;
- END; (*Change_it*)
-
- FUNCTION val( s: STRING3): integer;
-
- VAR
- minus:Boolean;
- i,n :Integer;
-
- BEGIN
- i := 1;
- WHILE (i < length(s)) AND ((s[i] = ' ') OR (s[i]='0')) DO
- i := i + 1;
- n := 0;
- IF length(s) >= i THEN
- BEGIN
- IF s[i] <> '-' THEN
- minus := false
- ELSE
- BEGIN
- minus := true;
- i := i + 1;
- END;
- WHILE (i <= length(s)) AND (s[i] IN ['0'..'9']) DO
- BEGIN
- n := (n * 10) + ord(s[i]) - ord('0');
- i := i + 1;
- END;
- IF minus THEN
- n := -n;
- END;
- val := n;
- END;
-
- Procedure Change_again (The_Number:Integer);
- VAR Down,Over,m:Integer;
-
- BEGIN
- change[The_Number]:=-Change [The_Number];
- If The_Number<=Number THEN
- BEGIN
- If The_Number >20 Then
- BEGIN
- Down:=(The_Number-19);
- Over:=24;
- END
- ELSE
- BEGIN
- Down:=The_Number+1;
- Over:=6;
- END;
- IF (yes_array[The_Number]=1) and (change[The_Number]=1) THEN
- NormVideo
- ELSE if (yes_Array[The_Number]=1) AND (Change[The_Number]=-1) THEN
- InverseVideo
- ELSE if (Yes_Array[The_Number]=-1) AND (Change[The_Number]=-1) THEN
- NormVideo
- ELSE if (Yes_Array[The_Number]=-1) AND (Change[The_Number]=1) THEN
- InverseVideo;
- m:=1;
- GotoXY (down,over);
- While (names[The_Number,m]<>'.') AND (m<=14) DO
- BEGIN
- Write (names[The_Number,m]);
- m:=m+1;
- END;
- END;
- END;
-
- BEGIN (*Get_answer*)
- done:=FALSE;
- The_Number:=Number+1;
- change_it;
- While (not DONE) DO
- BEGIN
- NormVideo;
- s[1]:=CHR(13);
- GotoXY (24,17);
- Write ('__');
- GotoXY (24,17);
- Readln (s);
- If S='+-' THEN DONE:=TRUE
- ELSE If (ORD(s[1])=13) OR (ORD(s[2])=13) THEN
- change_again(The_Number)
- ELSE
- BEGIN
- The_Number:=VAL (s);
- if The_Number<>0 THEN
- change_again(The_Number)
- ELSE The_Number:=Number+1;
- END;
- END; (*While*)
- END;
-
- (******************************************************************)
-
- Procedure Rename_all (Change:Yes_No);
- VAR Kount:Integer;
-
- Procedure Rename_it (Kount:Integer);
- Var
- old,new:fname;
- zero,m:Integer;
- ch:Char;
-
- Procedure Rename2 ( zero:Integer ; VAR Old,New:fname);
- GEMDOS ( $56 ) ;
-
- BEGIN
- zero:=0;
- old:=Names[Kount];
- m:=1;
- While (Names[kount,m]<>'.') DO
- m:=m+1;
- m:=m+3;
- ch:=names[kount,m];
- CASE ch OF
- 'X' : Names[Kount,m]:='C';
- 'C' : Names[Kount,m]:='X';
- END; (*Case*)
- New:=Names[Kount];
- Rename2 (zero,old,new);
- END;
-
-
-
- BEGIN
- For Kount:=1 to Number DO
- BEGIN
- If change[Kount]=1 THEN
- Rename_it (kount);
- END;
- END;
-
- (**************************************************************)
-
- BEGIN
- INIT;
- number:=0;
- path_string:='A:*.AC?';
- For i:=1 to length (path_string) DO
- path[i]:=path_string [i];
- path[length(path_String)+1]:=chr(0);
- set_dta( r) ;
- If Get_first (path,0)<0 THEN
- writeln( 'no files match specification!' )
- ELSE
- REPEAT
- m:=1;
- number:=number+1;
- names[number]:=r.name;
- While (names[number,m]<>chr(0)) AND (m<=14) DO
- m:=m+1;
- if (names[number,m-1])='C' THEN yes_array[number]:=1
- ELSE
- yes_array[number]:=-1;
- UNTIL get_next < 0 ;
- For Kount:=1 to 10000 DO;
- Curshome;
- Cursdown;
- clrEos;
- show_it;
- get_answer (change);
- Rename_all (change);
- Writeln ('Desktop.........');
- END.
-